import request from '@/utils/request';
import qs from 'qs';
import type { ResponseData } from '../typing';
// 响应接口
export interface GetBasicCustomerInfoPageRes {
    /* */
    code: number;

    /* */
    data: {
        /* */
        size: number;

        /* */
        current: number;

        /* */
        records: {
            /*主键 */
            id: number;

            /*房产ID */
            propertyId: number;

            /*角色 */
            role: string;

            /*是否添加企业微信:0->否,1->是 */
            cp: number;

            /*爱好特长 */
            hobby: string;

            /*其他 */
            other: string;

            /*家庭背景 */
            family: string;

            /*是否VIP:0->否,1->是 */
            vip: number;

            /*客户等级:A/B/C/D */
            level: string;

            /*满意度情况:1-5 */
            satisfaction: number;

            /*沟通记录 */
            communicationRecord: string;

            /*最后一次沟通时间 */
            lastTime: Record<string, unknown>;

            /*是否参加社区活动:0->否,1->是 */
            communityActivities: number;

            /*备注 */
            remark: string;

            /*是否是最新的记录:0->否,1->是 */
            last: number;

            /*最后一次维护时间 */
            createTime: Record<string, unknown>;

            /*小区名 */
            residentialName: string;

            /*管家姓名 */
            housekeeper: string;

            /*房产号 */
            propertyNumber: string;

            /*业主,多个/隔开 */
            owner: string;

            /*入住状态:0->未售空置,1->已售未收空置,2->已收空置,3->已入住 */
            checkIn: number;

            /*是否欠费:0->否1,->是 */
            arrears: number;

            /*生日 */
            birthday: string;

            /*报事情况 */
            orderNum: number;
        }[];

        /* */
        total: number;

        /* */
        pages: number;
    };

    /* */
    msg: string;
}

export interface QueryBasicSupplierParams {
    projectCode: string;
    buildingIds: string;
    owner: string;
    current: number;
    size: number;
}
/**
 * 获得客户关系分页
 * @param {string} projectCode 项目code
 * @param {string} buildingIds 楼栋/单元/层ID(多个逗号隔开)
 * @param {string} owner 业主,多个/隔开
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function getBasicCustomerInfoPage(params: Partial<QueryBasicSupplierParams>): Promise<GetBasicCustomerInfoPageRes> {
    return request.get(`/yfwy/basic-customer-info/page?${qs.stringify(params)}`);
}

// 响应接口
export interface GetBasicCustomerInfoRes {
    /* */
    code: number;

    /* */
    data: {
        /*主键 */
        id: number;

        /*房产ID */
        propertyId: number;

        /*角色 */
        role: string;

        /*是否添加企业微信:0->否,1->是 */
        cp: number;

        /*爱好特长 */
        hobby: string;

        /*其他 */
        other: string;

        /*家庭背景 */
        family: string;

        /*是否VIP:0->否,1->是 */
        vip: number;

        /*客户等级:A/B/C/D */
        level: string;

        /*满意度情况:1-5 */
        satisfaction: number;

        /*沟通记录 */
        communicationRecord: string;

        /*最后一次沟通时间 */
        lastTime: Record<string, unknown>;

        /*是否参加社区活动:0->否,1->是 */
        communityActivities: number;

        /*备注 */
        remark: string;

        /*是否是最新的记录:0->否,1->是 */
        last: number;

        /*最后一次维护时间 */
        createTime: Record<string, unknown>;

        /*小区名 */
        residentialName: string;

        /*管家姓名 */
        housekeeper: string;

        /*房产号 */
        propertyNumber: string;

        /*业主,多个/隔开 */
        owner: string;

        /*入住状态:0->未售空置,1->已售未收空置,2->已收空置,3->已入住 */
        checkIn: number;

        /*是否欠费:0->否1,->是 */
        arrears: number;

        /*生日 */
        birthday: string;

        /*报事情况 */
        orderNum: number;
    };

    /* */
    msg: string;
}

/**
 * 获得客户关系
 * @param {string} id
 * @returns
 */
export function getBasicCustomerInfo(id: string): Promise<GetBasicCustomerInfoRes> {
    return request.get(`/yfwy/basic-customer-info/${id}`);
}
/**
 * 删除客户关系
 * @param {string} id
 * @returns
 */
export function deleteBasicCustomerInfo(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/yfwy/basic-customer-info/${id}`);
}
// 参数接口
export interface UpdateBasicCustomerInfoParams {
    /*主键 */
    id: number;

    /*是否添加企业微信:0->否,1->是 */
    cp?: number;

    /*爱好特长 */
    hobby?: string;

    /*其他 */
    other?: string;

    /*家庭背景 */
    family?: string;

    /*是否VIP:0->否,1->是 */
    vip?: number;

    /*客户等级:A/B/C/D */
    level?: string;

    /*满意度情况:1-5 */
    satisfaction?: number;

    /*沟通记录 */
    communicationRecord?: string;

    /*最后一次沟通时间 */
    lastTime?: Record<string, unknown>;

    /*是否参加社区活动:0->否,1->是 */
    communityActivities?: number;

    /*备注 */
    remark?: string;
}

/**
 * 更新客户关系
 * @param {object} params 管理后台 - 客户关系更新 Request VO
 * @param {number} params.id 主键
 * @param {number} params.cp 是否添加企业微信:0->否,1->是
 * @param {string} params.hobby 爱好特长
 * @param {string} params.other 其他
 * @param {string} params.family 家庭背景
 * @param {number} params.vip 是否VIP:0->否,1->是
 * @param {string} params.level 客户等级:A/B/C/D
 * @param {number} params.satisfaction 满意度情况:1-5
 * @param {string} params.communicationRecord 沟通记录
 * @param {object} params.lastTime 最后一次沟通时间
 * @param {number} params.communityActivities 是否参加社区活动:0->否,1->是
 * @param {string} params.remark 备注
 * @returns
 */
export function updateBasicCustomerInfo(params: UpdateBasicCustomerInfoParams): Promise<ResponseData<boolean>> {
    return request.put(`/yfwy/basic-customer-info`, params);
}

// 导出客户关系
export function exportBasicCustomerInfoExcel(params: any): Promise<Blob> {
    return request.post(`/yfwy/basic-customer-info/export-excel`, params, {
        responseType: 'blob',
    });
}

// 历史维护记录
export function getBasicCustomerInfoHistory(id: any) {
    return request.get(`/yfwy/basic-customer-info/history/${id}`);
}

// 获得客户关系(根据房产ID)
export function getBasicCustomerInfoByPropertyId(params: any) {
    return request.get(`/yfwy/basic-customer-info/detail/${params.propertyId}`);
}
